package com.bigdata.service.impl;

import com.bigdata.dao.CntMapper;
import com.bigdata.entity.pojo.CntDistribution;
import com.bigdata.entity.pojo.CntRanking;
import com.bigdata.service.CntService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service
public class CntServiceImpl implements CntService {

    @Autowired
    private CntMapper cntMapper;

    @Override
    public Object getConnectionRanking() {
        // 获取原始数据
        List<CntRanking> rankings = this.cntMapper.selectConnectionRanking();

        // TODO 将原始数据处理为所需格式
        // 初始化两个列表
        List<String> phoneModels = new ArrayList<>();
        List<Integer> values = new ArrayList<>();

        // 遍历原始数据，填充到对应的列表中
        for (CntRanking ranking : rankings) {
            phoneModels.add(ranking.getProvince());
            values.add(ranking.getCount());
        }

        // 创建一个Map，返回所需的数据格式
        Map<String, Object> result = new HashMap<>();
        result.put("phoneModels", phoneModels);
        result.put("values", values);

        return result; // 返回格式化后的数据
    }

    @Override
    public Object getCntDistribution() {
        // 获取原始数据
        List<CntDistribution> distributions = this.cntMapper.selectCntDistribution();

        // TODO 将原始数据处理为所需格式
        // 初始化目标数据列表
        List<Map<String, Double>> coordinates = new ArrayList<>();

        // 遍历原始数据，将经纬度提取并放入目标格式
        for (CntDistribution distribution : distributions) {
            Map<String, Double> coordinate = new HashMap<>();
            coordinate.put("longitude", Double.parseDouble(distribution.getGpsLon()));
            coordinate.put("latitude", Double.parseDouble(distribution.getGpsLat()));
            coordinates.add(coordinate);
        }

        // 返回目标格式的数据
        return coordinates;
    }

}
